iT邦幫忙

DAY 23
0

昨天探討到使用[0-9]這樣的方式來代表數字的範圍.

今天接著探討範圍.

In [1]: import re

In [2]: re.search("[0-9]", "4") != None
Out[2]: True

In [3]: re.search("[9-0]", "4") != None
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)

[0-9] 可以,但是 [9-0]不可以.

這是使用ASCII Code,而且要由小到大.

0-9 的ASCII Code是 48~57
A-Z 的ASCII Code是 65~90
a-z 的ASCII Code是 97~122

中間還有一些符號.

那要表示數字及英文字母的pattern呢?

先來看以下例子:

In [4]: re.search("[0-z]", "X") != None
Out[4]: True

In [5]: re.search("[0-z]", "@") != None
Out[5]: True

@ 也包含進來了.
要改用以下的方式:

In [6]: re.search("[0-9A-Za-z]", "X") != None
Out[6]: True

In [7]: re.search("[0-9A-Za-z]", "@") != None
Out[7]: False

In [8]: re.search("[A-Za-z0-9]", "X") != None
Out[8]: True

其中 A-Z a-z 0-9 這三組都是舉例,先後順序無關,只有0-9不能寫成9-0
字母亦同.

16進位表示法的判斷

16進位是由 0-9 , a或A 表示10進位的10, 餘此類推
直到 f或F表示15. 16當然就進位寫成10了,以下用加上0x開頭的方式來判斷.

In [10]: re.search("^0[xX][0-9A-Fa-f]", "0XF") != None
Out[10]: True

In [11]: re.search("^0[xX][0-9A-Fa-f]", "0xE") != None
Out[11]: True

In [12]: re.search("^0[xX][0-9A-Fa-f]", "0xG") != None
Out[12]: False

pattern的意義是0開頭,接著是X或x,再來就要0-9或是A-F或是a-f表示.

可列印的ASCII Code的判斷

可列印的ASCII Code範圍是32-126,相當於16進位的20-7E.
在RE中可以用 \x 逸出序列的方式開頭代表.

In [13]: re.search("[\x20-\x7e]", "x") != None
Out[13]: True

注意到是可列印的,而不是全部的.


上一篇
過濾資料探討2
下一篇
過濾資料探討4
系列文
蠻可愛的資料庫與資料處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言